package com.taropan.wallpaper.ui;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.lang.ref.WeakReference;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.Timer;
import java.util.TimerTask;

import com.taropan.wallpaper.util.AppContext;
import com.taropan.wallpaper.util.BasicUIEvent;
import com.taropan.wallpaper.util.FileManager;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.app.Dialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
import android.app.Service;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.Bitmap.Config;
import android.location.LocationManager;
import android.media.ThumbnailUtils;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.view.OrientationEventListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

@SuppressLint("NewApi")
@TargetApi(8)
public final class WallpaperService extends Service  implements BasicUIEvent{

//	private static final String TAG = WallpaperService.class.getSimpleName();
	private ServiceBinder serviceBinder = new ServiceBinder();
//	private BroadcastReceiver receiver;
//	private TelephonyManager mTelephonyMgr;
//	
	@Override
	public IBinder onBind(Intent intent) {
		return serviceBinder;
	}
//
//	public void startChangeWallPaper() {
//		try {
//
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}
//
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		super.onStartCommand(intent, flags, startId);
		return START_STICKY;
	}
//
	@Override
	public void onStart(Intent intent, int startId) {
		InputStream is;
		try {
			is = getResources().getAssets().open("wallcoo");
			setWallpaper(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		
//		showNotification(getString(R.string.app_name));
//		UICore.setService(this);
//		SharedPreferences sp = getSharedPreferences("LocateTime", Context.MODE_PRIVATE);
//		if (null != sp) {
//			if (null != sp.getString("LocateStartTime", null)&& null != sp.getString("LocateEndTime", null)&& sp.getInt("LocateFrequency", 0) > 0) {
//				Consts.locateBeginTime = sp.getString("LocateStartTime", null);
//				Consts.locateEndTime = sp.getString("LocateEndTime", null);
//				AppContext.getInstance().Locate_Frequency = sp.getInt("LocateFrequency", 0);
//				System.out.println(">>>>>>>>>>onStart:"+Consts.locateBeginTime+"  "+Consts.locateEndTime+" "+AppContext.getInstance().Locate_Frequency);
//				if ((Consts.locateBeginTime.equals("0:00") && (Consts.locateEndTime.equals("0:00")||Consts.locateEndTime.equals("24:00")))) {
//					AppContext.getInstance().LOCATE_24 = true;
//				} else {
//					AppContext.getInstance().LOCATE_24 = false;
//				}
//			}			
//		}
		
	}
//
//	/**
//	 * 后台启动定位并上报
//	 */
//	public void timerLocateTask() {
//		System.out.println("后台启动定位并上报");
//		try {
//			if (timer != null) {
//				timer.cancel();
//			}
//			if (AppContext.getInstance().Locate_Frequency > 0) {
//				
//				timer = new Timer();
//				if (AppContext.getInstance().LOCATE_24) {
//					timer.schedule(new Task(), 10000,AppContext.getInstance().Locate_Frequency * 60000);
//				} else {
//					timer.schedule(new Task(), 10000, 60000);
//				}
//			}
//		} catch (Exception e) {
//			if (timer != null) {
//				timer.cancel();
//			}
//			FileManager.addLog(getClass().getSimpleName()+ ".java:timerLocateTask()" + "  Exception="+ e.toString());
//		}
//	}
//
//	/**
//	 * 后台启动定位并上报
//	 */
//	public void startLocateTask() {
//		System.out.println("后台启动定位并上报");
//		try {
//			if (timer != null) {
//				timer.cancel();
//			}
//			if (AppContext.getInstance().Locate_Frequency > 0) {
//							
//				timer = new Timer();
//				if (AppContext.getInstance().LOCATE_24) {
//					timer.schedule(new Task(), 10000,AppContext.getInstance().Locate_Frequency * 60000);
//				} else {
//					timer.schedule(new Task(), 10000, 60000);
//				}
//			}
//		} catch (Exception e) {
//			if (timer != null) {
//				timer.cancel();
//			}
//			FileManager.addLog(getClass().getSimpleName()+ ".java:timerLocateTask()" + "  Exception="+ e.toString());
//		}
//	}
//	
//	private long tempTime = 0L;
//
//	class Task extends TimerTask {
//		@Override
//		public void run() {
//			// 后台启动定位并上报
//			if (AppContext.getInstance().LOCATE_24) {
//				try {
//					 System.out.println("locate==================111111111111111=================");
//					FileManager.addLog("Task -run  Locate_Frequency="+ AppContext.getInstance().Locate_Frequency);
//					if (AppContext.getInstance().Locate_Frequency > 0) {
//						startLocate();
//						FileManager.addLog("Task -start locate");
//					}
//				} catch (Exception e) {
//					FileManager.addLog(getClass().getSimpleName()+ ".java:run()" + "  Exception=" + e.toString());
//				}
//			} else {
//				 System.out.println("locate==================2222222222222222=================");
//				long nowtime = ConditionUtil.getTimeMillis();
//				long time = AppContext.getInstance().Locate_Frequency * 60000;
//				try {
//					String nowdateStr = new SimpleDateFormat("HH:mm").format(ConditionUtil.getTimeMillis());
//					SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
//					// 开始定位时间
//					Date begin = sdf.parse(Consts.locateBeginTime);
//					// 结束定位时间
//					Date end = sdf.parse(Consts.locateEndTime);
//					// 当前时间
//					Date nowdate = sdf.parse(nowdateStr);
//					Calendar calendarBegin = Calendar.getInstance();
//					calendarBegin.setTime(begin);
//					Calendar calendarEnd = Calendar.getInstance();
//					calendarEnd.setTime(end);
//					Calendar calendarNow = Calendar.getInstance();
//					calendarNow.setTime(nowdate);
//
//					System.out.println(calendarNow.compareTo(calendarBegin));
//					System.out.println(calendarNow.compareTo(calendarEnd));
//					if (calendarNow.compareTo(calendarBegin) >= 0&& calendarNow.compareTo(calendarEnd) < 0) {
//						
//						if ((nowtime - tempTime)>time) {
//							tempTime = 0;
//						}
//						
//						if (tempTime == 0) {
//							tempTime = nowtime - 30*1000;
//						}
//						
//						if (nowtime > tempTime) {							
//							FileManager.addLog("Task -run  Locate_Frequency=" + AppContext.getInstance().Locate_Frequency);
//							startLocate();
//							FileManager.addLog("Task -start locate");
//							//System.out.println("================locate time============");
//							tempTime += time;
//						}
//					}else{
//						tempTime = 0L;
//					}
//
//				} catch (Exception e) {
//					FileManager.addLog(getClass().getSimpleName()+ ".java:run()" + "  Exception=" + e.toString());
//				}
//			}
//		}
//	}
//
//
	@Override
	public void onCreate() {
	}

	@Override
	public boolean onUnbind(Intent intent) {
		return false;
	}

	@Override
	public void onRebind(Intent intent) {
	}

	private Object thread = new int[0];
	
	@Override
	public void onDestroy() {
		try {
			synchronized (thread) {
				thread.notifyAll();
				thread = null;
			}
			
//			if (timer != null) {
//				timer.cancel();
//			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		super.onDestroy();
	}
	

	public void notifyService() {
		synchronized (thread) {
			thread.notifyAll();
		}
	}
	
	public class ServiceBinder extends Binder {
		public WallpaperService getService() {
			return WallpaperService.this;
		}
	}

	
	public WallpaperService getService() {
		return WallpaperService.this;
	}

	@Override
	public void execute(int mes, Object obj) {
		try {
//			Object loc[] = (Object[]) obj;
//			switch (mes) {
//			case Gps_Timeout:
//				Message mesg = Message.obtain(handler, GSM_Start);
//				mesg.sendToTarget();
//				break;
//			default:
//				break;
//			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}